home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / basic / pbtool.exe / CONVERT2.BAS < prev    next >
BASIC Source File  |  1991-11-11  |  4KB  |  109 lines

  1. '     PROGRAM: CONVERT2.BAS     PROGRAMMER: ANDY KELLETT 05/20/91
  2. '     DATE-WRITTEN: 05/20/91    USING POWER BASIC V2.10a
  3. '     THIS PROGRAM CAPITALIZES THE FIRST LETTER OF EACH WORD IN A
  4. '     (LOWERCASE) TEXT FILE AND WRITES A NEW TEXT FILE TO DISK.
  5. '     UPDATE: WORKS WITH LARGER CHUNKS OF DATA FOR BETTER SPEED!
  6. '     LAST UPDATED: 11/11/91
  7. '--------------------------------------------------------------------
  8. LAST.CHAR$ = " "
  9. BUF.SIZE% = 10000
  10. CLS
  11. LOCATE 1,1:PRINT  "         ┌──────────────────────────────────────────────────────────────┐"
  12. LOCATE 2,1:PRINT  "         │   THIS PROGRAM ALLOWS YOU TO CONVERT A TEXT FILE TO          │"
  13. LOCATE 3,1:PRINT  "         │   CAPITALIZE THE FIRST LETTER OF EACH WORD AND LEAVE ALL     │"
  14. LOCATE 4,1:PRINT  "         │   OTHER CHARACTERS IN LOWERCASE.  IT WILL WRITE OUT A NEW    │"
  15. LOCATE 5,1:PRINT  "         │   TEXT FILE TO DISK AND WILL NOT ALTER THE ORIGINAL TEXT     │"
  16. LOCATE 6,1:PRINT  "         │   FILE USED IN THE INPUT.                                    │"
  17. LOCATE 7,1:PRINT  "         │                                                              │"
  18. LOCATE 8,1:PRINT  "         │                                                              │"
  19. LOCATE 9,1:PRINT  "         │                                                              │"
  20. LOCATE 10,1:PRINT "         └──────────────────────────────────────────────────────────────┘"
  21.  
  22. CLS
  23. LOCATE 1,25:PRINT "CONVERT2  -  A. KELLETT"
  24. 7
  25. GOSUB FILEEXISTS
  26.  
  27. IF FILE1EOF& => BUF.SIZE% THEN
  28.    BUF.LEN& = BUF.SIZE%
  29. ELSE
  30.    BUF.LEN& = FILE1EOF&
  31. END IF
  32.  
  33. '*** OPEN BOTH FILES, READ & PROCESS & WRITE, CLOSE BOTH FILES ***
  34. LOCATE 13,5:PRINT USING "TOTAL BYTES IN FILE: ###,###";FILE1EOF&
  35. LOCATE 14,5:PRINT "WORKING ON BYTE: "
  36. OPEN FILENAME1$ FOR BINARY AS #1
  37. OPEN FILENAME2$ FOR BINARY AS #2
  38.    QUITFLAG% = 0
  39.    WHILE QUITFLAG% = 0
  40.       GET$ 1, BUF.LEN&, IN.BUFFER$
  41.       MID$(IN.BUFFER$,1, 1) = UCASE$(LEFT$(IN.BUFFER$,1))
  42.       LAST.CHAR$ = LEFT$(IN.BUFFER$,1)
  43.       FOR I% = 2 TO LEN(IN.BUFFER$)
  44.          REM** WE NEED TO CAPITALIZE CURRENT CHARACTER **
  45.          IF (LAST.CHAR$ = " " OR_
  46.         LAST.CHAR$ = "." OR_
  47.         LAST.CHAR$ = "," ) THEN
  48.             MID$(IN.BUFFER$, I%, 1) = UCASE$(MID$(IN.BUFFER$, I%, 1))
  49.          '** UNCOMMENT NEXT TWO LINES TO LOWERCASE ALL OTHER CHARACTERS **
  50.          ' ELSE
  51.          '    MID$(IN.BUFFER$, I%, 1) = LCASE$(MID$(IN.BUFFER$, I%, 1))
  52.          END IF
  53.          LAST.CHAR$ = MID$(IN.BUFFER$, I%, 1)
  54.       NEXT I%
  55.       PUT$ 2, IN.BUFFER$
  56.       LAST.CHAR$ = CHAR$
  57.       BYTES.READ& = BYTES.READ& + BUF.LEN&
  58.       LOCATE 14, 22:PRINT USING "###,###";BYTES.READ&
  59.       IF BYTES.READ& => FILE1EOF& THEN
  60.          QUITFLAG% = 1
  61.       ELSE
  62.          IF FILE1EOF& - BYTES.READ& < BUF.LEN& THEN
  63.             BUF.LEN& = FILE1EOF& - BYTES.READ& :REM**READ IN LEFTOVER BYTES **
  64.          END IF
  65.       END IF
  66.    WEND
  67. CLOSE #2:CLOSE #1
  68. LOCATE 16,10:PRINT "PROGRAM COMPLETED"
  69.  
  70. END
  71. '
  72. '
  73. '----------------------------------------------------------
  74. FILEEXISTS:
  75.    LOCATE 2,15:PRINT "THIS PROGRAM CONVERTS A TEXT FILE TO UPPER/LOWER CASE."
  76.    LOCATE 5,5:INPUT "NAME OF INPUT FILE: ";FILENAME1$
  77.    IF FILENAME1$ = "" THEN
  78.       PRINT "YOU MUST ENTER A FILE NAME -- PROGRAM ENDING. "
  79.       END
  80.    END IF
  81.  
  82.    '*** CHECK VALIDITY OF INPUT FILE NAME ***
  83.    OPEN FILENAME1$ FOR BINARY AS #1
  84.       IF LOF(1) < 1 THEN
  85.          PRINT "THE INPUT FILE DOES NOT EXISTS."
  86.          CLOSE #1
  87.          KILL FILENAME1$
  88.          DELAY 2.5
  89.          LOCATE 22,1
  90.          END
  91.       END IF
  92.       FILE1EOF& = LOF(1)
  93.    CLOSE #1
  94.    LOCATE 6,5:INPUT "NAME OF OUTPUT FILE: ";FILENAME2$
  95.    '*** CHECK VALIDITY OF OUTPUT FILE NAME ***
  96.    OPEN FILENAME2$ FOR BINARY AS #2
  97.       IF LOF(2) > 1 THEN
  98.          PRINT "THE OUTPUT FILE ALREADY EXISTS."
  99.          CLOSE #2
  100.          KILL FILENAME2$
  101.          DELAY 2.5
  102.          LOCATE 22,1
  103.          END
  104.       END IF
  105.    CLOSE #2
  106.  
  107. RETURN
  108.  
  109.